package coba.calendar;

import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.liferay.portal.kernel.exception.SystemException;

import coba.model.Itinerario;
import coba.model.ItinerarioRecorrido;
import coba.model.Recorrido;
import coba.model.Solicitud;
import coba.service.ItinerarioLocalServiceUtil;

public class Disponibilidad {

	/*
	public static Map<String, Long> getByRecorrido(List<Solicitud> listSolicitud, int anio, int mes, int dia,
			List<ItinerarioRecorrido> listItinerarioRecorrido,
			List<Recorrido> listRecorrido) throws SystemException {

		Map<String, Long> mapConcurrencia = Concurrencia.get(listSolicitud, anio, mes, dia, listItinerarioRecorrido);
		Map<String, Long> mapDisponibilidad = new HashMap<String, Long>();

		for (String key : mapConcurrencia.keySet()) {
			long recorridoId = Long.valueOf(key.split("-")[0]);
			
			for (Recorrido recorrido : listRecorrido) {
				if (recorrido.getId() == recorridoId) {
					mapDisponibilidad.put(key, recorrido.getCapacidad() - mapConcurrencia.get(key));
					break;
				}
			}
		}

		return mapDisponibilidad;
		
	}
*/

	public static long getByItinerario(List<Solicitud> listSolicitud, int anio, int mes, int dia,
			List<ItinerarioRecorrido> listItinerarioRecorrido,
			List<Recorrido> listRecorrido,
			long itinerarioId) throws SystemException {

		Map<String, Long> mapConcurrencia = Concurrencia.get(listSolicitud, anio, mes, dia, listItinerarioRecorrido);
		long disponibilidadItinerario = 99999;
		
		for (ItinerarioRecorrido itinerarioRecorrido : listItinerarioRecorrido) {
			if (itinerarioId == itinerarioRecorrido.getItinerarioId()) {
				for (Recorrido recorrido : listRecorrido) {
					if (itinerarioRecorrido.getRecorridoId() == recorrido.getId()) {
						Long concurrencia = mapConcurrencia.get(recorrido.getId() +
								"-" + itinerarioRecorrido.getHora());

						long disponibilidadRecorrido = recorrido.getCapacidad() -
								(concurrencia != null ? concurrencia : 0L);

						if (disponibilidadRecorrido < disponibilidadItinerario) {
							disponibilidadItinerario = disponibilidadRecorrido;
						}
					}
				}
			}
		}

		return disponibilidadItinerario;
		
	}

}
